//
//  OnAppear.swift
//  SwiftUIAnimation
//
//  Created by 李煜 on 2024/8/21.
//

import SwiftUI
/**
 
 
 SwiftUI 调用某个方法的确切时机取决于你将这个方法应用于的视图类型，但这个方法的 action 闭包会在第一次渲染的帧出现之前完成。
 
 用中文解释就是：
 
 具体视图类型决定调用时机：SwiftUI 中某些方法（比如视图的生命周期方法或动画方法）的调用时机是由具体的视图类型决定的。不同的视图类型可能在不同的时间点调用这些方法。
 
 action 闭包的完成时机：当你在视图中使用一个方法并传入一个 action 闭包时，这个闭包会在视图的第一次渲染帧（即视图第一次显示到屏幕上）出现之前完成。这意味着，闭包中的代码会在视图的实际显示之前执行完毕。
 在这个例子中，onAppear 方法会在视图首次渲染之前调用，闭包中的代码（比如 print("View appeared") 和 message = "Hello, World!"）会先于视图的实际显示执行。这就是“action 闭包完成在第一次渲染帧之前”的意思。
 */
struct OnAppear: View {
  @State private var message = "Loading..."

  var body: some View {
    Text(message)
      .onAppear {
        print("View appeared")
        // 这里的代码会在视图第一次渲染之前执行
        message = "Hello, World!"
      }
  }
}

#Preview {
  OnAppear()
}
